package com.j283_5.wisdom_park.common.utils;
/**
 * @Create 2022/2/7 11:05
 * @Version 1.0
 */
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *   数字格式化类 个日期格式化类
 * @author 930437
 *
 */
@SuppressWarnings("all")
public class FormatTool {
    private static  SimpleDateFormat  simpleDateFormat;
    private  static  DecimalFormat   decimalFormat;//
    private  static final String  EDATE_PATTERN="yyyy-MM-dd";//英文版的 年月日
    private  static final String  EDATETIME_PATTERN="yyyy-MM-dd  HH:mm:ss";//英文版的年月日时分秒
    private  static final String  CDATETIME_PATTERN="yyyy年MM月dd日  HH:mm:ss";//中文版的 年月日
    private  static final String  CDATE_PATTERN="yyyy年MM月dd日";

    public static  String getEmpEducation(Integer empEducation){
        switch (empEducation){
            case 0:
                return "小学";
            case 1:
                return "初中";
            case 2:
                return "高中";
            case 3:
                return "专科";
            case 4:
                return "本科";
            case 5:
                return "研究生";
        }
        return   "";
    }
    public static  Integer getEmpEducation(String empEducation){
        switch (empEducation){
            case "小学":
                return 0;
            case "初中":
                return 1;
            case "高中":
                return 2;
            case "专科":
                return 3;
            case "本科":
                return 4;
            case "研究生":
                return 5;
        }
        return  null;
    }
    /*第一:该类提供如下方法将Date对象转换为指定模式的字符串对象,将字符串日期时间按照指定模式解析为日期时间对象;
     * Date  --->  String
     * 1.yyyy-MM-dd
     * 2.yyyy-MM-dd  HH:mm:ss
     * 3.yyyy年MM月dd日
     * 4.yyyy年MM月dd日  HH:mm:ss
     * 5.指定格式
     *
     * String  --->  Date
     * */

    static	public  String  getStringNewDate(){
        return  getStringDate(new  Date(),EDATE_PATTERN);
    }
    /**
     * 把日期按 yyyy-MM-dd默认格式进行解析成字符串
     * @param date  日期
     * @return
     */
    static	public  String  getStringDate(Date  date){
        return  getStringDate(date,EDATE_PATTERN);
    }
    /**
     * 把日期按 yyyy-MM-dd  HH:mm:ss 默认格式进行解析成字符串
     * @param date  日期
     * @return
     */
    static	public  String  getStringDateTime(Date  date){
        return  getStringDate(date,EDATETIME_PATTERN);
    }
    /**
     * 把日期按 yyyy年MM月dd日 默认格式进行解析成字符串
     * @param date  日期
     * @return
     */
    static	public  String  getStringChinaDate(Date  date){
        return  getStringDate(date,CDATE_PATTERN);
    }
    /**
     * 把日期按 yyyy年MM月dd日  HH:mm:ss 默认格式进行解析成字符串
     * @param date  日期
     * @return
     */
    static	public  String  getStringChinaDateTime(Date  date){
        return  getStringDate(date,CDATETIME_PATTERN);
    }
    /**
     * 用户自己给指定的格式进行解析
     * @param date
     * @param pattern
     * @return
     */
    static 	public  String  getStringDate(Date  date,String pattern){
        simpleDateFormat=new SimpleDateFormat(pattern);
        return  simpleDateFormat.format(date);
    }

    /**
     *   按指定格式进行解析字符串
     * @param time
     * @param pattern
     * @return
     * @
     */
    static 	public  Date  getDate(String  time,String pattern)  {//抛出
        simpleDateFormat=new SimpleDateFormat(pattern);
        if(time==null ||  formatString(time)==null){
            return   null;
        }
        try {
            return  simpleDateFormat.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return   null;
    }
    /**
     * 把字符串按照  yyyy-MM-dd 进行解析成 Date
     * @param time
     * @return
     * @
     */
    static 	public  Date  getDate(String  time) {
        return  getDate(time,EDATE_PATTERN);
    }
    /**
     * 把字符串按照  yyyy-MM-dd HH:mm:ss 进行解析成 Date
     * @param time
     * @return
     * @
     */
    static 	public  Date  getDateTime(String  time) {
        return  getDate(time,EDATETIME_PATTERN);
    }
    /**
     * 把字符串按照  yyyy年MM月dd日  进行解析成 Date
     * @param time
     * @return
     * @
     */
    static 	public  Date  getChinaDate(String  time) {
        return  getDate(time,CDATE_PATTERN);
    }
    /**
     * 把字符串按照  yyyy年MM月dd日  HH:mm:ss  进行解析成 Date
     * @param time
     * @return
     * @
     */
    static 	public  Date  getChinaDateTime(String  time) {
        return  getDate(time,CDATETIME_PATTERN);
    }

    // 判断字符是否为空
    /**
     * 判断字符串是不是null 如果是"" null 返回null 如果字符串去掉首位空格还有字符那么返回去掉首位空格的字符
     *
     * @param str
     * @return
     */
    static public String formatString(String str) {// "" null " aaa " aaa
        if (str != null && str.trim().length() > 0) {
            return str.trim();
        }
        return null;
    }

    static public boolean isLine(String str) {// "" null " aaa " aaa
        if (str != null && str.trim().length() > 0) {
            return  str.equals("--");
        }
        return false;
    }


    /**
     * 判断字符串是不是数字int 如果是返回 数字 不如不是返回null
     *
     * @param str
     * @return
     */
    static public Integer formatInteger(String str) {// "" null " aaa " aaa
        if (str != null && str.trim().length() > 0) {
            try {
                return Integer.parseInt(str);
            } catch (Exception e) {
                return null;
            }
        }
        return null;
    }

    /**
     * 判断字符串是不是数字Double 如果是返回 数字Double 不如不是返回null
     *
     * @param str
     * @return
     */
    static public Double formatDouble(String str) {// "" null " aaa " aaa
        return formatDouble(str, -1);
    }

    /**
     * 判断字符串是不是数字Double 如果是返回 数字Double 保留decimal_Places为小数 不如不是返回null
     *
     * @param str
     * @param decimal_Places
     * @return
     */
    static public Double formatDouble(String str, int decimal_Places) {// ""
        // null
        // " aaa
        // " aaa

        if (str != null && str.trim().length() > 0) {
            try {
                double number = Double.parseDouble(str);
                if (decimal_Places > -1) {
                    // 保留decimal_Places位小数
                    number = Double.parseDouble(String.format("%." + decimal_Places + "f", number));
                }
                return number;

            } catch (Exception e) {
                System.out.println(e);
                return null;
            }
        }
        return null;
    }

}

